package com.aiden.diploma_system.utils;

import io.reactivex.Flowable;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.Callable;
import org.web3j.abi.EventEncoder;
import org.web3j.abi.TypeReference;
import org.web3j.abi.datatypes.Address;
import org.web3j.abi.datatypes.Bool;
import org.web3j.abi.datatypes.Event;
import org.web3j.abi.datatypes.Function;
import org.web3j.abi.datatypes.Type;
import org.web3j.abi.datatypes.Utf8String;
import org.web3j.abi.datatypes.generated.Int8;
import org.web3j.abi.datatypes.generated.Uint256;
import org.web3j.crypto.Credentials;
import org.web3j.protocol.Web3j;
import org.web3j.protocol.core.DefaultBlockParameter;
import org.web3j.protocol.core.RemoteCall;
import org.web3j.protocol.core.RemoteFunctionCall;
import org.web3j.protocol.core.methods.request.EthFilter;
import org.web3j.protocol.core.methods.response.BaseEventResponse;
import org.web3j.protocol.core.methods.response.Log;
import org.web3j.protocol.core.methods.response.TransactionReceipt;
import org.web3j.tuples.generated.Tuple3;
import org.web3j.tuples.generated.Tuple5;
import org.web3j.tuples.generated.Tuple7;
import org.web3j.tx.Contract;
import org.web3j.tx.TransactionManager;
import org.web3j.tx.gas.ContractGasProvider;

/**
 * <p>Auto generated code.
 * <p><strong>Do not modify!</strong>
 * <p>Please use the <a href="https://docs.web3j.io/command_line.html">web3j command line tools</a>,
 * or the org.web3j.codegen.SolidityFunctionWrapperGenerator in the
 * <a href="https://github.com/web3j/web3j/tree/master/codegen">codegen module</a> to update.
 *
 * <p>Generated with web3j version 4.5.5.
 */
@SuppressWarnings("rawtypes")
public class Diploma extends Contract {
    private static final String BINARY = "6080604052600060085560006009556000600a556000600b553480156200002557600080fd5b5060078054600160a060020a0319163390811790915560408051808201825260058082527f61646d696e00000000000000000000000000000000000000000000000000000060208084019182526000958652919091529190922091516200008e929190620000ef565b50604080518082018252600681527f313233343536000000000000000000000000000000000000000000000000000060208083019182523360009081526005909152929092209051620000e89260019092019190620000ef565b5062000194565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200013257805160ff191683800117855562000162565b8280016001018555821562000162579182015b828111156200016257825182559160200191906001019062000145565b506200017092915062000174565b5090565b6200019191905b808211156200017057600081556001016200017b565b90565b6144f080620001a46000396000f30060806040526004361061018a5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663184e91c3811461018f57806319b7fc5b146103c057806322c357a014610403578063367ba684146104245780633a3c4f0e1461048d5780633ecfe8a9146105ae5780634450247e146105c35780634b08ccb3146105ed5780635d0175581461060e578063604b7f23146107a45780636130c93e146107c55780637f8ecafa1461082e57806385ec3425146108435780638da5cb5b14610a5c57806391fb0a1a14610a8d578063924e304814610aa2578063947c33a814610ab7578063949bfbfb14610b1e57806395da7bae14610bc35780639834ed1b14610d9e578063b8c02dc114610ff5578063c30e91fb14611016578063c7d76f2e14611037578063d5e9667c1461111a578063dcbf5bfb14611306578063e39d757114611327578063e3a1d4f91461133f578063e9971c0314611360578063f6a355a614611405578063f77697c91461141a578063fc23f5b11461157f575b600080fd5b34801561019b57600080fd5b506101b0600160a060020a0360043516611597565b60405180806020018060200180602001806020018060200186810386528b818151815260200191508051906020019080838360005b838110156101fd5781810151838201526020016101e5565b50505050905090810190601f16801561022a5780820380516001836020036101000a031916815260200191505b5086810385528a5181528a516020918201918c019080838360005b8381101561025d578181015183820152602001610245565b50505050905090810190601f16801561028a5780820380516001836020036101000a031916815260200191505b5086810384528951815289516020918201918b019080838360005b838110156102bd5781810151838201526020016102a5565b50505050905090810190601f1680156102ea5780820380516001836020036101000a031916815260200191505b5086810383528851815288516020918201918a019080838360005b8381101561031d578181015183820152602001610305565b50505050905090810190601f16801561034a5780820380516001836020036101000a031916815260200191505b50868103825287518152875160209182019189019080838360005b8381101561037d578181015183820152602001610365565b50505050905090810190601f1680156103aa5780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b3480156103cc57600080fd5b506103ef600160a060020a0360043516602435600090810b90604435900b6118ce565b604080519115158252519081900360200190f35b34801561040f57600080fd5b506103ef600160a060020a0360043516611970565b34801561043057600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526103ef948235600160a060020a03169460248035953695946064949201919081908401838280828437509497506119ef9650505050505050565b34801561049957600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526103ef958335600160a060020a031695369560449491939091019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750949750611b359650505050505050565b3480156105ba57600080fd5b506103ef611caa565b3480156105cf57600080fd5b506105db600435611f81565b60408051918252519081900360200190f35b3480156105f957600080fd5b506101b0600160a060020a0360043516611fae565b34801561061a57600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261072f958335600160a060020a031695369560449491939091019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506122ca9650505050505050565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610769578181015183820152602001610751565b50505050905090810190601f1680156107965780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107b057600080fd5b506103ef600160a060020a036004351661265b565b3480156107d157600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526103ef948235600160a060020a03169460248035953695946064949201919081908401838280828437509497506129129650505050505050565b34801561083a57600080fd5b506103ef612c9e565b34801561084f57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526103ef958335600160a060020a031695369560449491939091019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750949750612d3f9650505050505050565b348015610a6857600080fd5b50610a71612f1a565b60408051600160a060020a039092168252519081900360200190f35b348015610a9957600080fd5b506105db612f29565b348015610aae57600080fd5b506105db612f2f565b348015610ac357600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526103ef958335600160a060020a0316953695604494919390910191908190840183828082843750949750612f359650505050505050565b348015610b2a57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526103ef958335600160a060020a031695369560449491939091019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750949750612fc79650505050505050565b348015610bcf57600080fd5b50610bdb6004356131a0565b6040518086600160a060020a0316600160a060020a0316815260200180602001806020018060200180602001858103855289818151815260200191508051906020019080838360005b83811015610c3c578181015183820152602001610c24565b50505050905090810190601f168015610c695780820380516001836020036101000a031916815260200191505b5085810384528851815288516020918201918a019080838360005b83811015610c9c578181015183820152602001610c84565b50505050905090810190601f168015610cc95780820380516001836020036101000a031916815260200191505b50858103835287518152875160209182019189019080838360005b83811015610cfc578181015183820152602001610ce4565b50505050905090810190601f168015610d295780820380516001836020036101000a031916815260200191505b50858103825286518152865160209182019188019080838360005b83811015610d5c578181015183820152602001610d44565b50505050905090810190601f168015610d895780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b348015610daa57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526103ef958335600160a060020a031695369560449491939091019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506132549650505050505050565b34801561100157600080fd5b506103ef600160a060020a0360043516613513565b34801561102257600080fd5b5061072f600160a060020a036004351661351e565b34801561104357600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526103ef958335600160a060020a031695369560449491939091019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375094975061359d9650505050505050565b34801561112657600080fd5b5061113b600160a060020a0360043516613885565b604051808881526020018060200180602001806020018760000b60000b81526020018660000b60000b81526020018060200185810385528b818151815260200191508051906020019080838360005b838110156111a257818101518382015260200161118a565b50505050905090810190601f1680156111cf5780820380516001836020036101000a031916815260200191505b5085810384528a5181528a516020918201918c019080838360005b838110156112025781810151838201526020016111ea565b50505050905090810190601f16801561122f5780820380516001836020036101000a031916815260200191505b5085810383528951815289516020918201918b019080838360005b8381101561126257818101518382015260200161124a565b50505050905090810190601f16801561128f5780820380516001836020036101000a031916815260200191505b50858103825286518152865160209182019188019080838360005b838110156112c25781810151838201526020016112aa565b50505050905090810190601f1680156112ef5780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390f35b34801561131257600080fd5b506103ef600160a060020a0360043516613b31565b34801561133357600080fd5b506103ef600435613b52565b34801561134b57600080fd5b506103ef600160a060020a0360043516613d8c565b34801561136c57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526103ef958335600160a060020a031695369560449491939091019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750949750613eb59650505050505050565b34801561141157600080fd5b506105db613fd9565b34801561142657600080fd5b5061143b600160a060020a0360043516613fdf565b60405180806020018060200180602001848103845287818151815260200191508051906020019080838360005b83811015611480578181015183820152602001611468565b50505050905090810190601f1680156114ad5780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b838110156114e05781810151838201526020016114c8565b50505050905090810190601f16801561150d5780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b83811015611540578181015183820152602001611528565b50505050905090810190601f16801561156d5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b34801561158b57600080fd5b50610a716004356141e4565b600160a060020a038116600090815260016020526040902060050154606090819081908190819060ff1615156115cc57600080fd5b600160a060020a038616600090815260016020818152604092839020805484516002828616156101000260001901909216829004601f8101859004850282018501909652858152919493850193600486019360038701939287019291879183018282801561167b5780601f106116505761010080835404028352916020019161167b565b820191906000526020600020905b81548152906001019060200180831161165e57829003601f168201915b5050875460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959a50899450925084019050828280156117095780601f106116de57610100808354040283529160200191611709565b820191906000526020600020905b8154815290600101906020018083116116ec57829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950889450925084019050828280156117975780601f1061176c57610100808354040283529160200191611797565b820191906000526020600020905b81548152906001019060200180831161177a57829003601f168201915b5050855460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959850879450925084019050828280156118255780601f106117fa57610100808354040283529160200191611825565b820191906000526020600020905b81548152906001019060200180831161180857829003601f168201915b5050845460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959750869450925084019050828280156118b35780601f10611888576101008083540402835291602001916118b3565b820191906000526020600020905b81548152906001019060200180831161189657829003601f168201915b50505050509050945094509450945094505b91939590929450565b60006118d984613b31565b15156118e457600080fd5b600160a060020a038416600081815260208181526040808320600801805487850b60ff9081166101000261ff0019968b900b90911660ff199092169190911794909416939093179092558151928352820181905260028282015260f060020a616f6b026060830152516000805160206144a58339815191529181900360800190a15060015b9392505050565b60006119e7826040805190810160405280600781526020017f65647548617368000000000000000000000000000000000000000000000000008152506040805190810160405280600481526020017f74696d6500000000000000000000000000000000000000000000000000000000815250613eb5565b90505b919050565b60006119fa84613b31565b1515611a0857506000611969565b600160a060020a03841660009081526020819052604090205483148015611b205750816040518082805190602001908083835b60208310611a5a5780518252601f199092019160209182019101611a3b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660008086600160a060020a0316600160a060020a031681526020019081526020016000206003016040518082805460018160011615610100020316600290048015611b0d5780601f10611aeb576101008083540402835291820191611b0d565b820191906000526020600020905b815481529060010190602001808311611af9575b5050915050604051809103902060001916145b15611b2d57506001611969565b506000611969565b6000611b3f61421f565b600754600160a060020a03163314611b5657600080fd5b506040805160c081018252600160a060020a03888116825260208083018981528385018890526060840189905260808401879052600160a08501819052600854600090815260038452959095208451815473ffffffffffffffffffffffffffffffffffffffff1916941693909317835551805193948594611bde939185019290910190614261565b5060408201518051611bfa916002840191602090910190614261565b5060608201518051611c16916003840191602090910190614261565b5060808201518051611c32916004840191602090910190614261565b5060a091909101516005909101805460ff191691151591909117905560088054600101905560408051600160a060020a03891681526020810182905260028183015260f060020a616f6b02606082015290516000805160206144a5833981519152916080908290030190a15060019695505050505050565b6000611cb46142db565b611cbd33613b31565b151561018a5750600a80546000908152600460208181526040808420805473ffffffffffffffffffffffffffffffffffffffff19163390811790915581516101a0810183529554865281518083018352600180825260f860020a6031028286018190528886019283528451808601865282815280870182905289860152845180860186528281528087019190915260608901528351808501855286815260e260020a631b9d5b1b0281870181905260808a01919091528451808601865287815280870182905260a08a01528451808601865287815280870182905260c08a01528451808601865287815280870182905260e08a015261010089018290526101208901829052845180860186528781528087018290526101408a01528451808601865296875286860152610160880195909552610180870185905290855284835293208451815592518051859493611e1993908501920190614261565b5060408201518051611e35916002840191602090910190614261565b5060608201518051611e51916003840191602090910190614261565b5060808201518051611e6d916004840191602090910190614261565b5060a08201518051611e89916005840191602090910190614261565b5060c08201518051611ea5916006840191602090910190614261565b5060e08201518051611ec1916007840191602090910190614261565b506101008281015160088301805461012086015160ff19909116600093840b60ff9081169190911761ff0019169190930b929092169092021790556101408201518051611f18916009840191602090910190614261565b506101608201518051611f3591600a840191602090910190614261565b506101809190910151600b909101805460ff1916911515919091179055600a805460098054600090815260066020526040902082905560019182019092558154810190915591505b5090565b6000808210158015611f94575060095482105b1561018a57506000818152600660205260409020546119ea565b6060806060806060611fbf86613b31565b1561018a57600160a060020a038616600090815260208181526040918290206004810180548451601f6002600019610100600186161502019093169290920491820185900485028101850190955280855290936005830193600984019360068101936007909101929187919083018282801561207c5780601f106120515761010080835404028352916020019161207c565b820191906000526020600020905b81548152906001019060200180831161205f57829003601f168201915b5050875460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959a508994509250840190508282801561210a5780601f106120df5761010080835404028352916020019161210a565b820191906000526020600020905b8154815290600101906020018083116120ed57829003601f168201915b5050865460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950889450925084019050828280156121985780601f1061216d57610100808354040283529160200191612198565b820191906000526020600020905b81548152906001019060200180831161217b57829003601f168201915b5050855460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959850879450925084019050828280156122265780601f106121fb57610100808354040283529160200191612226565b820191906000526020600020905b81548152906001019060200180831161220957829003601f168201915b5050845460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959750869450925084019050828280156122b45780601f10612289576101008083540402835291602001916122b4565b820191906000526020600020905b81548152906001019060200180831161229757829003601f168201915b50505050509050945094509450945094506118c5565b6060806122d561434a565b604080518082018252600480825260e260020a631b9d5b1b02602083019081529251919450849282918083835b602083106123215780518252601f199092019160209182019101612302565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019166000808a600160a060020a0316600160a060020a0316815260200190815260200160002060060160405180828054600181600116156101000203166002900480156123d45780601f106123b25761010080835404028352918201916123d4565b820191906000526020600020905b8154815290600101906020018083116123c0575b5050915050604051809103902060001916141561261957600160a060020a03881660009081526001602052604090206005015460ff16151561258157506040805160c081018252878152602080820188905281830187905260608201869052825180840184526004815260e260020a631b9d5b1b02818301526080830152600160a08301819052600160a060020a038b1660009081529082529290922081518051929384936124869284920190614261565b50602082810151805161249f9260018501920190614261565b50604082015180516124bb916002840191602090910190614261565b50606082015180516124d7916003840191602090910190614261565b50608082015180516124f3916004840191602090910190614261565b5060a091909101516005909101805460ff1916911515919091179055600b8054600101905560408051600160a060020a038a1681526020810182905260028183015260f060020a616f6b02606082015290516000805160206144a5833981519152916080908290030190a1604080518082019091526002815260f060020a616f6b0260208201529250612650565b60408051600160a060020a038a16815260208101829052601e818301527fefbfbdefbfbdefbfbdd0b4efbfbdc8b7efbfbdefbfbdd1a7efbfbdefbfbd0000606082015290516000805160206144a58339815191529181900360800190a160408051808201909152601e81527fefbfbdefbfbdefbfbdd0b4efbfbdc8b7efbfbdefbfbdd1a7efbfbdefbfbd000060208201529250612650565b60408051808201909152601681527fefbfbdd1b4efbfbdefbfbdefbfbdd1a7efbfbdefbfbd00000000000000000000602082015292505b505095945050505050565b600754600090600160a060020a0316331461267557600080fd5b600160a060020a03821660009081526001602052604090206005015460ff16156128bf57600160a060020a03821660009081526001602081815260408084209184905290922082546126de93600490920192600290821615610100026000190190911604614383565b50600160a060020a03821660009081526001602081815260408084209184905290922091810180546127259360050192600290821615610100026000190190911604614383565b50600160a060020a0382166000908152600160208181526040808420918490529092206003909201805461276e9360090192600290821615610100026000190190911604614383565b50600160a060020a038216600090815260016020818152604080842091849052909220600490920180546127b79360060192600290821615610100026000190190911604614383565b50600160a060020a038216600090815260016020818152604080842091849052909220600292830180546128009460079093019391929181161561010002600019011604614383565b50600b8054600019019055600160a060020a03821660009081526001602052604081209061282e82826143f8565b61283c6001830160006143f8565b61284a6002830160006143f8565b6128586003830160006143f8565b6128666004830160006143f8565b50600501805460ff1916905560408051600160a060020a03841681526020810182905260028183015260f060020a616f6b02606082015290516000805160206144a58339815191529181900360800190a15060016119ea565b60408051600160a060020a038416815260208101829052600681830152600080516020614485833981519152606082015290516000805160206144a58339815191529181900360800190a15060006119ea565b600754600090819081908190600160a060020a0316331461293257600080fd5b61293b87613b31565b15612c4457600160a060020a03871660009081526020819052604090205486148015612a585750846040518082805190602001908083835b602083106129925780518252601f199092019160209182019101612973565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660008089600160a060020a0316600160a060020a031681526020019081526020016000206003016040518082805460018160011615610100020316600290048015612a455780601f10612a23576101008083540402835291820191612a45565b820191906000526020600020905b815481529060010190602001808311612a31575b5050915050604051809103902060001916145b15612c3f57600160a060020a038716600081815260208181526040808320805480855260048452918420805473ffffffffffffffffffffffffffffffffffffffff19169055938352908290528183559450612ab660018301826143f8565b612ac46002830160006143f8565b612ad26003830160006143f8565b612ae06004830160006143f8565b612aee6005830160006143f8565b612afc6006830160006143f8565b612b0a6007830160006143f8565b60088201805461ffff19169055612b256009830160006143f8565b612b33600a830160006143f8565b50600b01805460ff19169055600091505b600954821015612b7457600082815260066020526040902054831415612b6957612b74565b600190910190612b44565b50805b600160095403811015612bcd5760018101600081815260046020526040808220549382529020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390931692909217909155612b77565b6009805460001990810160009081526006602090815260408083209290925583549092019092558151600160a060020a038a16815290810182905260028183015260f060020a616f6b02606082015290516000805160206144a58339815191529181900360800190a160019350612c94565b612c94565b60408051600160a060020a038916815260208101829052600681830152600080516020614485833981519152606082015290516000805160206144a58339815191529181900360800190a1600093505b5050509392505050565b6000612d363360408051908101604052806001815260200160f860020a60310281525060408051908101604052806001815260200160f860020a60310281525060408051908101604052806001815260200160f860020a6031028152506040805190810160405280600681526020017f726561736f6e0000000000000000000000000000000000000000000000000000815250611b35565b50600190505b90565b6000612d4a8a613b31565b1515612d5557600080fd5b600160a060020a038a166000908152602081815260409091208a51612d82926001909201918c0190614261565b50600160a060020a038a166000908152602081815260409091208951612db0926002909201918b0190614261565b50600160a060020a038a166000908152602081815260409091208851612dde926003909201918a0190614261565b50600160a060020a038a166000908152602081815260409091208751612e0c92600490920191890190614261565b50600160a060020a038a166000908152602081815260409091208651612e3a92600590920191880190614261565b50600160a060020a038a166000908152602081815260409091208551612e6892600790920191870190614261565b50600160a060020a038a166000908152602081815260409091208451612e9692600990920191860190614261565b50600160a060020a038a166000908152602081815260409091208351612ec492600a90920191850190614261565b5060408051600160a060020a038c1681526020810182905260028183015260f060020a616f6b02606082015290516000805160206144a58339815191529181900360800190a15060019998505050505050505050565b600754600160a060020a031681565b60095490565b60085490565b6000612f4083613b31565b1515612f4b57600080fd5b600160a060020a0383166000908152602081815260409091208351612f7892600a90920191850190614261565b5060408051600160a060020a03851681526020810182905260028183015260f060020a616f6b02606082015290516000805160206144a58339815191529181900360800190a150600192915050565b600754600090600160a060020a03163314612fe157600080fd5b826040518082805190602001908083835b602083106130115780518252601f199092019160209182019101612ff2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019166005600086600160a060020a0316600160a060020a0316815260200190815260200160002060000160405180828054600181600116156101000203166002900480156130c55780601f106130a35761010080835404028352918201916130c5565b820191906000526020600020905b8154815290600101906020018083116130b1575b5050915050604051809103902060001916148015611b205750816040518082805190602001908083835b6020831061310e5780518252601f1990920191602091820191016130ef565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019166005600086600160a060020a0316600160a060020a031681526020019081526020016000206001016040518082805460018160011615610100020316600290048015611b0d5780601f10611aeb576101008083540402835291820191611b0d565b60008181526003602052604081206005015460609081908190819060ff1615156131c957600080fd5b60008681526003602081815260409283902080546001808301805487516002610100948316159490940260001901909116839004601f8101879004870282018701909852878152600160a060020a03909316969095918401949184019360040192918691908301828280156117095780601f106116de57610100808354040283529160200191611709565b600061325e6142db565b6132678c613b31565b151561018a578b60046000600a54815260200190815260200160002060006101000a815481600160a060020a030219169083600160a060020a031602179055506101a060405190810160405280600a5481526020018c81526020018b81526020018a8152602001898152602001888152602001878152602001868152602001600160000b8152602001600160000b8152602001858152602001848152602001600115158152509050806000808e600160a060020a0316600160a060020a0316815260200190815260200160002060008201518160000155602082015181600101908051906020019061335a929190614261565b5060408201518051613376916002840191602090910190614261565b5060608201518051613392916003840191602090910190614261565b50608082015180516133ae916004840191602090910190614261565b5060a082015180516133ca916005840191602090910190614261565b5060c082015180516133e6916006840191602090910190614261565b5060e08201518051613402916007840191602090910190614261565b506101008281015160088301805461012086015160ff19909116600093840b60ff9081169190911761ff0019169190930b929092169092021790556101408201518051613459916009840191602090910190614261565b50610160820151805161347691600a840191602090910190614261565b506101809190910151600b909101805460ff1916911515919091179055600a8054600980546000908152600660209081526040918290208490556001938401909455815490920190558051600160a060020a038f16815291820181905260028282015260f060020a616f6b026060830152516000805160206144a5833981519152916080908290030190a15060019b9a5050505050505050505050565b60006119e78261265b565b60606119e78260408051908101604052806001815260200160f860020a60330281525060408051908101604052806001815260200160f860020a60330281525060408051908101604052806001815260200160f860020a60330281525060408051908101604052806001815260200160f860020a6033028152506122ca565b60006135a761443f565b600754600160a060020a031633146135be57600080fd5b6135c786613b31565b1561382c575060408051608081018252858152602080820186905281830185905260016060830152600160a060020a03881660009081526002825292909220815180519293849361361b9284920190614261565b5060208281015180516136349260018501920190614261565b5060408201518051613650916002840191602090910190614261565b50606091909101516003909101805460ff19169115159190911790556040805180820182526004815260e260020a631b9d5b1b026020808301918252600160a060020a038a166000908152908190529290922090516136b59260069092019190614261565b50604080518082018252600480825260e260020a631b9d5b1b026020808401918252600160a060020a038b166000908152908190529390932091516136ff93929091019190614261565b506040805180820182526004815260e260020a631b9d5b1b026020808301918252600160a060020a038a166000908152908190529290922090516137499260059092019190614261565b506040805180820182526004815260e260020a631b9d5b1b026020808301918252600160a060020a038a166000908152908190529290922090516137939260099092019190614261565b506040805180820182526004815260e260020a631b9d5b1b026020808301918252600160a060020a038a166000908152908190529290922090516137dd9260079092019190614261565b5060408051600160a060020a03881681526020810182905260028183015260f060020a616f6b02606082015290516000805160206144a58339815191529181900360800190a16001915061387c565b60408051600160a060020a038816815260208101829052600681830152600080516020614485833981519152606082015290516000805160206144a58339815191529181900360800190a1600091505b50949350505050565b60006060806060600080606061389a88613b31565b15156138a557600080fd5b600160a060020a03881660009081526020818152604080832080546008820154600180840180548651600261010094831615850260001901909216829004601f81018a90048a0282018a019098528781529498919790860196600387019685840b969490950490920b93600a01929188918301828280156139675780601f1061393c57610100808354040283529160200191613967565b820191906000526020600020905b81548152906001019060200180831161394a57829003601f168201915b5050885460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959b508a9450925084019050828280156139f55780601f106139ca576101008083540402835291602001916139f5565b820191906000526020600020905b8154815290600101906020018083116139d857829003601f168201915b5050875460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959a5089945092508401905082828015613a835780601f10613a5857610100808354040283529160200191613a83565b820191906000526020600020905b815481529060010190602001808311613a6657829003601f168201915b5050845460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815295995086945092508401905082828015613b115780601f10613ae657610100808354040283529160200191613b11565b820191906000526020600020905b815481529060010190602001808311613af457829003601f168201915b505050505090509650965096509650965096509650919395979092949650565b600160a060020a03166000908152602081905260409020600b015460ff1690565b600081815260036020526040812060050154819060ff1615613d3f576000838152600360205260408120805473ffffffffffffffffffffffffffffffffffffffff1916815590613ba560018301826143f8565b613bb36002830160006143f8565b613bc16003830160006143f8565b613bcf6004830160006143f8565b50600501805460ff1916905550815b600160085403811015613cf057600180820160009081526003602052604080822084835291208154815473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909116178155818301805492939192613c5792848101929160026000199282161561010002929092011604614383565b5060028281018054613c7c928481019291600019610100600183161502011604614383565b5060038201816003019080546001816001161561010002031660029004613ca4929190614383565b5060048201816004019080546001816001161561010002031660029004613ccc929190614383565b506005918201549101805460ff191660ff9092161515919091179055600101613bde565b60088054600019019055604080513381526020810182905260028183015260f060020a616f6b02606082015290516000805160206144a58339815191529181900360800190a160019150613d86565b6040805133815260208101829052600681830152600080516020614485833981519152606082015290516000805160206144a58339815191529181900360800190a1600091505b50919050565b604080518082018252600480825260e260020a631b9d5b1b0260208301908152925160009383928291908083835b60208310613dd95780518252601f199092019160209182019101613dba565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660008085600160a060020a0316600160a060020a031681526020019081526020016000206006016040518082805460018160011615610100020316600290048015613e8c5780601f10613e6a576101008083540402835291820191613e8c565b820191906000526020600020905b815481529060010190602001808311613e78575b50509150506040518091039020600019161415613eac5760009150613d86565b60019150613d86565b600160a060020a03831660009081526001602052604081206005015460ff1615613f8657600160a060020a03841660009081526001602090815260409091208451613f0892600490920191860190614261565b50600160a060020a03841660009081526001602090815260409091208351613f3892600290920191850190614261565b5060408051600160a060020a03861681526020810182905260028183015260f060020a616f6b02606082015290516000805160206144a58339815191529181900360800190a1506001611969565b60408051600160a060020a038616815260208101829052600681830152600080516020614485833981519152606082015290516000805160206144a58339815191529181900360800190a1506000611969565b600b5490565b600160a060020a0381166000908152600260205260409020600301546060908190819060ff16151561401057600080fd5b600160a060020a038416600090815260026020818152604092839020805484516001808316156101000260001901909216859004601f81018590048502820185019096528581529194908501938501928591908301828280156140b45780601f10614089576101008083540402835291602001916140b4565b820191906000526020600020905b81548152906001019060200180831161409757829003601f168201915b5050855460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959850879450925084019050828280156141425780601f1061411757610100808354040283529160200191614142565b820191906000526020600020905b81548152906001019060200180831161412557829003601f168201915b5050845460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959750869450925084019050828280156141d05780601f106141a5576101008083540402835291602001916141d0565b820191906000526020600020905b8154815290600101906020018083116141b357829003601f168201915b505050505090509250925092509193909250565b600081815260046020526040812054600160a060020a03161561018a5750600081815260046020526040902054600160a060020a03166119ea565b60c0604051908101604052806000600160a060020a03168152602001606081526020016060815260200160608152602001606081526020016000151581525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106142a257805160ff19168380011785556142cf565b828001600101855582156142cf579182015b828111156142cf5782518255916020019190600101906142b4565b50611f7d92915061446a565b6101a06040519081016040528060008152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081526020016000800b81526020016000800b815260200160608152602001606081526020016000151581525090565b60c06040519081016040528060608152602001606081526020016060815260200160608152602001606081526020016000151581525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106143bc57805485556142cf565b828001600101855582156142cf57600052602060002091601f016020900482015b828111156142cf5782548255916001019190600101906143dd565b50805460018160011615610100020316600290046000825580601f1061441e575061443c565b601f01602090049060005260206000209081019061443c919061446a565b50565b6080604051908101604052806060815260200160608152602001606081526020016000151581525090565b612d3c91905b80821115611f7d576000815560010161447056006661696c656400000000000000000000000000000000000000000000000000008256897e4bc64927099c20b5cc327902148f96709a193bdf6ebdc145a21d0cc4a165627a7a723058203d565bb1ffcf40b05af93a6fa051acb314a7b3be8913f4ffbccd2d97128000d80029";

    public static final String FUNC_GETAPPLYINFOBYADDR = "getApplyInfoByAddr";

    public static final String FUNC_SETSTATE = "setstate";

    public static final String FUNC_TESTAPPLY2 = "testApply2";

    public static final String FUNC_STUDENTLOGIN = "studentLogin";

    public static final String FUNC_ADDBLACKLIST = "addBlackList";

    public static final String FUNC_TESTREGISTSTUDENT = "testRegistStudent";

    public static final String FUNC_GETIDBYINDEX = "getIDByIndex";

    public static final String FUNC_QUERYDIPLOMA = "queryDiploma";

    public static final String FUNC_APPLYDIPLOMA = "applyDiploma";

    public static final String FUNC_COMFIRMEDU = "comfirmEdu";

    public static final String FUNC_REVOKESTU = "revokeStu";

    public static final String FUNC_TESTADDBLT = "testaddBlt";

    public static final String FUNC_UPDATESTUDENTINFO = "updateStudentInfo";

    public static final String FUNC_OWNER = "owner";

    public static final String FUNC_GETSTUACCOUNT = "getStuAccount";

    public static final String FUNC_GETBLTACCOUNT = "getBltAccount";

    public static final String FUNC_SETIMAGE = "setimage";

    public static final String FUNC_ADMINLOGIN = "adminLogin";

    public static final String FUNC_GETBLACKLISTINFOBYINDEX = "getBlackListInfoByIndex";

    public static final String FUNC_REGISTSTUDENT = "registStudent";

    public static final String FUNC_TESTAPPLY3 = "testApply3";

    public static final String FUNC_TESTAPPLY1 = "testApply1";

    public static final String FUNC_REVOKEEDU = "revokeEdu";

    public static final String FUNC_GETSTUDENTINFOBYADDR = "getStudentInfoByAddr";

    public static final String FUNC_IFEXSIT = "ifExsit";

    public static final String FUNC_REVOKEBLACKLIST = "revokeBlackList";

    public static final String FUNC_EXSITEDU = "exsitEdu";

    public static final String FUNC_SETEDUHASH = "setEduHash";

    public static final String FUNC_GETAPPLYACCOUNT = "getApplyAccount";

    public static final String FUNC_GETREVOKEINFOBYADDR = "getRevokeInfoByAddr";

    public static final String FUNC_GETADDRESSBYID = "getAddressByID";

    public static final Event EVENTRESPONSELOG_EVENT = new Event("eventResponseLog",
            Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Utf8String>() {}));
    ;

    @Deprecated
    protected Diploma(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, credentials, gasPrice, gasLimit);
    }

    protected Diploma(String contractAddress, Web3j web3j, Credentials credentials, ContractGasProvider contractGasProvider) {
        super(BINARY, contractAddress, web3j, credentials, contractGasProvider);
    }

    @Deprecated
    protected Diploma(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    protected Diploma(String contractAddress, Web3j web3j, TransactionManager transactionManager, ContractGasProvider contractGasProvider) {
        super(BINARY, contractAddress, web3j, transactionManager, contractGasProvider);
    }

    public RemoteFunctionCall<Tuple5<String, String, String, String, String>> getApplyInfoByAddr(String addr) {
        final Function function = new Function(FUNC_GETAPPLYINFOBYADDR,
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, addr)),
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
        return new RemoteFunctionCall<Tuple5<String, String, String, String, String>>(function,
                new Callable<Tuple5<String, String, String, String, String>>() {
                    @Override
                    public Tuple5<String, String, String, String, String> call() throws Exception {
                        List<Type> results = executeCallMultipleValueReturn(function);
                        return new Tuple5<String, String, String, String, String>(
                                (String) results.get(0).getValue(),
                                (String) results.get(1).getValue(),
                                (String) results.get(2).getValue(),
                                (String) results.get(3).getValue(),
                                (String) results.get(4).getValue());
                    }
                });
    }

    public RemoteFunctionCall<TransactionReceipt> setstate(String addr, BigInteger _state, BigInteger _index) {
        final Function function = new Function(
                FUNC_SETSTATE,
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, addr),
                        new org.web3j.abi.datatypes.generated.Int8(_state),
                        new org.web3j.abi.datatypes.generated.Int8(_index)),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> testApply2(String addr) {
        final Function function = new Function(
                FUNC_TESTAPPLY2,
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, addr)),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<Boolean> studentLogin(String addr, BigInteger _id, String _password) {
        final Function function = new Function(FUNC_STUDENTLOGIN,
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, addr),
                        new org.web3j.abi.datatypes.generated.Uint256(_id),
                        new org.web3j.abi.datatypes.Utf8String(_password)),
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        return executeRemoteCallSingleValueReturn(function, Boolean.class);
    }

    public RemoteFunctionCall<TransactionReceipt> addBlackList(String addr, String _sid, String _name, String _school, String _reason) {
        final Function function = new Function(
                FUNC_ADDBLACKLIST,
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, addr),
                        new org.web3j.abi.datatypes.Utf8String(_sid),
                        new org.web3j.abi.datatypes.Utf8String(_name),
                        new org.web3j.abi.datatypes.Utf8String(_school),
                        new org.web3j.abi.datatypes.Utf8String(_reason)),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> testRegistStudent() {
        final Function function = new Function(
                FUNC_TESTREGISTSTUDENT,
                Arrays.<Type>asList(),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<BigInteger> getIDByIndex(BigInteger _index) {
        final Function function = new Function(FUNC_GETIDBYINDEX,
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_index)),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteFunctionCall<Tuple5<String, String, String, String, String>> queryDiploma(String addr) {
        final Function function = new Function(FUNC_QUERYDIPLOMA,
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, addr)),
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
        return new RemoteFunctionCall<Tuple5<String, String, String, String, String>>(function,
                new Callable<Tuple5<String, String, String, String, String>>() {
                    @Override
                    public Tuple5<String, String, String, String, String> call() throws Exception {
                        List<Type> results = executeCallMultipleValueReturn(function);
                        return new Tuple5<String, String, String, String, String>(
                                (String) results.get(0).getValue(),
                                (String) results.get(1).getValue(),
                                (String) results.get(2).getValue(),
                                (String) results.get(3).getValue(),
                                (String) results.get(4).getValue());
                    }
                });
    }

    public RemoteFunctionCall<TransactionReceipt> applyDiploma(String addr, String _school, String _major, String _time, String _eduType) {
        final Function function = new Function(
                FUNC_APPLYDIPLOMA,
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, addr),
                        new org.web3j.abi.datatypes.Utf8String(_school),
                        new org.web3j.abi.datatypes.Utf8String(_major),
                        new org.web3j.abi.datatypes.Utf8String(_time),
                        new org.web3j.abi.datatypes.Utf8String(_eduType)),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> comfirmEdu(String addr) {
        final Function function = new Function(
                FUNC_COMFIRMEDU,
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, addr)),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> revokeStu(String addr, BigInteger _id, String _password) {
        final Function function = new Function(
                FUNC_REVOKESTU,
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, addr),
                        new org.web3j.abi.datatypes.generated.Uint256(_id),
                        new org.web3j.abi.datatypes.Utf8String(_password)),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> testaddBlt() {
        final Function function = new Function(
                FUNC_TESTADDBLT,
                Arrays.<Type>asList(),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> updateStudentInfo(String addr, String _sid, String _name, String _password, String _school, String _major, String _time, String _eduType, String _image) {
        final Function function = new Function(
                FUNC_UPDATESTUDENTINFO,
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, addr),
                        new org.web3j.abi.datatypes.Utf8String(_sid),
                        new org.web3j.abi.datatypes.Utf8String(_name),
                        new org.web3j.abi.datatypes.Utf8String(_password),
                        new org.web3j.abi.datatypes.Utf8String(_school),
                        new org.web3j.abi.datatypes.Utf8String(_major),
                        new org.web3j.abi.datatypes.Utf8String(_time),
                        new org.web3j.abi.datatypes.Utf8String(_eduType),
                        new org.web3j.abi.datatypes.Utf8String(_image)),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<String> owner() {
        final Function function = new Function(FUNC_OWNER,
                Arrays.<Type>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteFunctionCall<BigInteger> getStuAccount() {
        final Function function = new Function(FUNC_GETSTUACCOUNT,
                Arrays.<Type>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteFunctionCall<BigInteger> getBltAccount() {
        final Function function = new Function(FUNC_GETBLTACCOUNT,
                Arrays.<Type>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteFunctionCall<TransactionReceipt> setimage(String addr, String _image) {
        final Function function = new Function(
                FUNC_SETIMAGE,
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, addr),
                        new org.web3j.abi.datatypes.Utf8String(_image)),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<Boolean> adminLogin(String addr, String _id, String _password) {
        final Function function = new Function(FUNC_ADMINLOGIN,
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, addr),
                        new org.web3j.abi.datatypes.Utf8String(_id),
                        new org.web3j.abi.datatypes.Utf8String(_password)),
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        return executeRemoteCallSingleValueReturn(function, Boolean.class);
    }

    public RemoteFunctionCall<Tuple5<String, String, String, String, String>> getBlackListInfoByIndex(BigInteger index) {
        final Function function = new Function(FUNC_GETBLACKLISTINFOBYINDEX,
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(index)),
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
        return new RemoteFunctionCall<Tuple5<String, String, String, String, String>>(function,
                new Callable<Tuple5<String, String, String, String, String>>() {
                    @Override
                    public Tuple5<String, String, String, String, String> call() throws Exception {
                        List<Type> results = executeCallMultipleValueReturn(function);
                        return new Tuple5<String, String, String, String, String>(
                                (String) results.get(0).getValue(),
                                (String) results.get(1).getValue(),
                                (String) results.get(2).getValue(),
                                (String) results.get(3).getValue(),
                                (String) results.get(4).getValue());
                    }
                });
    }

    public RemoteFunctionCall<TransactionReceipt> registStudent(String addr, String _sid, String _name, String _password, String _school, String _major, String _eduHash, String _time, String _eduType, String _image) {
        final Function function = new Function(
                FUNC_REGISTSTUDENT,
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, addr),
                        new org.web3j.abi.datatypes.Utf8String(_sid),
                        new org.web3j.abi.datatypes.Utf8String(_name),
                        new org.web3j.abi.datatypes.Utf8String(_password),
                        new org.web3j.abi.datatypes.Utf8String(_school),
                        new org.web3j.abi.datatypes.Utf8String(_major),
                        new org.web3j.abi.datatypes.Utf8String(_eduHash),
                        new org.web3j.abi.datatypes.Utf8String(_time),
                        new org.web3j.abi.datatypes.Utf8String(_eduType),
                        new org.web3j.abi.datatypes.Utf8String(_image)),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> testApply3(String addr) {
        final Function function = new Function(
                FUNC_TESTAPPLY3,
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, addr)),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> testApply1(String addr) {
        final Function function = new Function(
                FUNC_TESTAPPLY1,
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, addr)),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> revokeEdu(String addr, String _id, String _name, String _reason) {
        final Function function = new Function(
                FUNC_REVOKEEDU,
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, addr),
                        new org.web3j.abi.datatypes.Utf8String(_id),
                        new org.web3j.abi.datatypes.Utf8String(_name),
                        new org.web3j.abi.datatypes.Utf8String(_reason)),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<Tuple7<BigInteger, String, String, String, BigInteger, BigInteger, String>> getStudentInfoByAddr(String addr) {
        final Function function = new Function(FUNC_GETSTUDENTINFOBYADDR,
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, addr)),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Int8>() {}, new TypeReference<Int8>() {}, new TypeReference<Utf8String>() {}));
        return new RemoteFunctionCall<Tuple7<BigInteger, String, String, String, BigInteger, BigInteger, String>>(function,
                new Callable<Tuple7<BigInteger, String, String, String, BigInteger, BigInteger, String>>() {
                    @Override
                    public Tuple7<BigInteger, String, String, String, BigInteger, BigInteger, String> call() throws Exception {
                        List<Type> results = executeCallMultipleValueReturn(function);
                        return new Tuple7<BigInteger, String, String, String, BigInteger, BigInteger, String>(
                                (BigInteger) results.get(0).getValue(),
                                (String) results.get(1).getValue(),
                                (String) results.get(2).getValue(),
                                (String) results.get(3).getValue(),
                                (BigInteger) results.get(4).getValue(),
                                (BigInteger) results.get(5).getValue(),
                                (String) results.get(6).getValue());
                    }
                });
    }

    public RemoteFunctionCall<Boolean> ifExsit(String add) {
        final Function function = new Function(FUNC_IFEXSIT,
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, add)),
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        return executeRemoteCallSingleValueReturn(function, Boolean.class);
    }

    public RemoteFunctionCall<TransactionReceipt> revokeBlackList(BigInteger index) {
        final Function function = new Function(
                FUNC_REVOKEBLACKLIST,
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(index)),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<Boolean> exsitEdu(String addr) {
        final Function function = new Function(FUNC_EXSITEDU,
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, addr)),
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        return executeRemoteCallSingleValueReturn(function, Boolean.class);
    }

    public RemoteFunctionCall<TransactionReceipt> setEduHash(String addr, String _eduHash, String _time) {
        final Function function = new Function(
                FUNC_SETEDUHASH,
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, addr),
                        new org.web3j.abi.datatypes.Utf8String(_eduHash),
                        new org.web3j.abi.datatypes.Utf8String(_time)),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<BigInteger> getApplyAccount() {
        final Function function = new Function(FUNC_GETAPPLYACCOUNT,
                Arrays.<Type>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteFunctionCall<Tuple3<String, String, String>> getRevokeInfoByAddr(String addr) {
        final Function function = new Function(FUNC_GETREVOKEINFOBYADDR,
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, addr)),
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
        return new RemoteFunctionCall<Tuple3<String, String, String>>(function,
                new Callable<Tuple3<String, String, String>>() {
                    @Override
                    public Tuple3<String, String, String> call() throws Exception {
                        List<Type> results = executeCallMultipleValueReturn(function);
                        return new Tuple3<String, String, String>(
                                (String) results.get(0).getValue(),
                                (String) results.get(1).getValue(),
                                (String) results.get(2).getValue());
                    }
                });
    }

    public RemoteFunctionCall<String> getAddressByID(BigInteger _id) {
        final Function function = new Function(FUNC_GETADDRESSBYID,
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_id)),
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public List<EventResponseLogEventResponse> getEventResponseLogEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(EVENTRESPONSELOG_EVENT, transactionReceipt);
        ArrayList<EventResponseLogEventResponse> responses = new ArrayList<EventResponseLogEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            EventResponseLogEventResponse typedResponse = new EventResponseLogEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.addr = (String) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.message = (String) eventValues.getNonIndexedValues().get(1).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public Flowable<EventResponseLogEventResponse> eventResponseLogEventFlowable(EthFilter filter) {
        return web3j.ethLogFlowable(filter).map(new io.reactivex.functions.Function<Log, EventResponseLogEventResponse>() {
            @Override
            public EventResponseLogEventResponse apply(Log log) {
                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(EVENTRESPONSELOG_EVENT, log);
                EventResponseLogEventResponse typedResponse = new EventResponseLogEventResponse();
                typedResponse.log = log;
                typedResponse.addr = (String) eventValues.getNonIndexedValues().get(0).getValue();
                typedResponse.message = (String) eventValues.getNonIndexedValues().get(1).getValue();
                return typedResponse;
            }
        });
    }

    public Flowable<EventResponseLogEventResponse> eventResponseLogEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(EVENTRESPONSELOG_EVENT));
        return eventResponseLogEventFlowable(filter);
    }

    @Deprecated
    public static Diploma load(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        return new Diploma(contractAddress, web3j, credentials, gasPrice, gasLimit);
    }

    @Deprecated
    public static Diploma load(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        return new Diploma(contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    public static Diploma load(String contractAddress, Web3j web3j, Credentials credentials, ContractGasProvider contractGasProvider) {
        return new Diploma(contractAddress, web3j, credentials, contractGasProvider);
    }

    public static Diploma load(String contractAddress, Web3j web3j, TransactionManager transactionManager, ContractGasProvider contractGasProvider) {
        return new Diploma(contractAddress, web3j, transactionManager, contractGasProvider);
    }

    public static RemoteCall<Diploma> deploy(Web3j web3j, Credentials credentials, ContractGasProvider contractGasProvider) {
        return deployRemoteCall(Diploma.class, web3j, credentials, contractGasProvider, BINARY, "");
    }

    public static RemoteCall<Diploma> deploy(Web3j web3j, TransactionManager transactionManager, ContractGasProvider contractGasProvider) {
        return deployRemoteCall(Diploma.class, web3j, transactionManager, contractGasProvider, BINARY, "");
    }

    @Deprecated
    public static RemoteCall<Diploma> deploy(Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        return deployRemoteCall(Diploma.class, web3j, credentials, gasPrice, gasLimit, BINARY, "");
    }

    @Deprecated
    public static RemoteCall<Diploma> deploy(Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        return deployRemoteCall(Diploma.class, web3j, transactionManager, gasPrice, gasLimit, BINARY, "");
    }

    public static class EventResponseLogEventResponse extends BaseEventResponse {
        public String addr;

        public String message;
    }
}
